home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib13.dsk
/
FILE NAME MOVER.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
4KB
|
123 lines
100 REM **********************
110 REM * FILE NAME MOVER *
120 REM * BY DEAN KAY *
130 REM * COPYRIGHT (C) 1983 *
140 REM * BY MICRO-SPARC INC *
150 REM * LINCLON, MA. 01773 *
160 REM **********************
170 REM ***BUFFERS=$3000-$3EFF
180 CLEAR : HIMEM: 12288
190 DIM P(60),T(60),S(60),L(60),E(60),LG(60)
200 DIM FILE$(60),DIR$(60)
210 REM ***SETUP RWTS ROUTINE***
220 DATA 32,227,3,32,181,183,96
230 FOR A = 47721 TO 47727
240 READ B: POKE A,B: NEXT A
250 RD = 1:WR = 2: REM ***READ & WRITE***
260 CMD = RD: REM ***COMMAND=READ***
270 TEXT : HOME : HTAB 14: INVERSE : PRINT "FILE NAME MOVER": NORMAL : VTAB 23: PRINT "** COPYRIGHT 1983 - MICROSPARC, INC. **"
280 POKE 34,1: REM ***TOP EDGE=1***
290 VTAB 10: HTAB 6: FLASH : PRINT "READING DIRECTORY, PLEASE WAIT"
300 GOSUB 5000: PRINT CHR$(7): REM ***BELL***
310 VTAB 10: HTAB 6: PRINT "FORMING DIRECTORY, PLEASE WAIT": NORMAL
320 NUM = 0: REM COUNTER =0
330 FOR BUFFER = 12288 TO 16128 STEP 256
340 FOR I = BUFFER +14 TO BUFFER +255 STEP 35
350 IF PEEK(I) = 0 THEN 470: REM ***END OF FILE QUIT***
360 IF PEEK(I -3) = 255 THEN 450: REM ***SKIP DELETED FILES***
370 NUM = NUM +1
380 P(NUM) = PEEK(I -1)
390 S(NUM) = PEEK(I -2)
400 T(NUM) = PEEK(I -3)
410 L(NUM) = PEEK(I +30)
420 E(NUM) = PEEK(I +31)
430 FILE$(NUM) = ""
440 FOR J = 0 TO 29:FILE$(NUM) = FILE$(NUM) + CHR$( PEEK(I +J)): NEXT J
450 NEXT I
460 NEXT BUFFER
470 GOSUB 6000: REM ***PRINT CATALOG***
1000 REM ***RENAME ROUTINE***
1010 PRINT CHR$(7): REM ** BELL **
1020 PRINT "TYPE IN TWO FILE NAMES TO SWAP PLACES"
1030 INPUT "FILE NAME#1=";FR$
1040 IF FR$ = "" THEN 2020
1050 INPUT "FILE NAME#2=";TU$
1060 IF TU$ = "" THEN 2020
1070 FR = VAL(FR$):TU = VAL(TU$)
1080 IF FR = 0 THEN 1010
1090 IF TU = 0 THEN 1010
1100 IF FR >NUM THEN 1010
1110 IF TU >NUM THEN 1010
1120 IF FR = TU THEN 1010
1130 F = FR:T = TU
1140 REM ***TRANSFER ROUTINE***
1150 X = P(F):P(F) = P(T):P(T) = X
1160 X = T(F):T(F) = T(T):T(T) = X
1170 X = S(F):S(F) = S(T):S(T) = X
1180 X = L(F):L(F) = L(T):L(T) = X
1190 X = E(F):E(F) = E(T):E(T) = X
1200 X$ = FILE$(F):FILE$(F) = FILE$(T):FILE$(T) = X$
2000 REM ***WRITE TO DISK?***
2010 GOSUB 6000
2020 PRINT CHR$(7): REM ***BELL***
2030 INPUT "WRITE DIRECTORY TO DISK? Y/N";A$
2040 IF A$ = "" THEN HOME : GOTO 1000
2050 IF LEFT$(A$,1) = "N" THEN HOME : GOTO 1000
2060 IF LEFT$(A$,1) = "Y" THEN 3000
2070 GOTO 2010
3000 REM ***CLEAR BUFFERS TO ZEROS***
3010 POKE 34,1: HOME : FLASH : VTAB 10: HTAB 7: PRINT "PLEASE WAIT, LOADING BUFFERS": NORMAL
3020 FOR X = 48 TO 62: POKE 66,0: POKE 67,X: CALL 47062: NEXT X
3030 REM ***LOAD BUFFERS***
3040 X = 0:S = 14: REM ***COUNTER=0:SECTOR=14***
3050 FOR BUFFER = 12288 TO 16128 STEP 256
3060 POKE BUFFER +1,17: POKE BUFFER +2,S:S = S -1
3070 IF S = 0 THEN 4000: REM ***SEC=0THENQUIT***
3080 FOR J = BUFFER +11 TO BUFFER +255 STEP 35
3090 X = X +1
3100 IF X >NUM THEN 3160
3110 POKE J,T(X): POKE J +1,S(X)
3120 POKE J +2,P(X): POKE J +33,L(X)
3130 POKE J +34,E(X)
3140 FOR K = 1 TO 30: POKE J +K +2, ASC( MID$ (FILE$(X),K,1)): NEXT
3150 NEXT J
3160 NEXT BUFFER
4000 REM ***PRINT CATALOG ROUTINE***
4010 HOME : PRINT CHR$(7): FLASH : VTAB 10: HTAB 7: PRINT "WRITING TO DISK, PLEASE WAIT": NORMAL
4020 REM ***OMMAND=WRITE***
4030 CMD = WR: GOSUB 5000
4040 TEXT : HOME
4050 PRINT CHR$(4);"CATALOG": END
5000 REM ***READ/WRITE TRK/SEC***
5010 BUF = 47:TRK = 17
5020 FOR SEC = 15 TO 1 STEP -1
5030 BUF = BUF +1
5040 POKE 47083,0: REM VOL#
5050 POKE 47089,BUF: REM BUF HI
5060 POKE 47088,0: REM BUFFER LO
5070 POKE 47092,CMD: REM RD/WR TRK
5080 POKE 47084,TRK: REM TRACK#
5090 POKE 47085,SEC: REM SECTOR
5100 CALL 47721: NEXT SEC: RETURN
6000 REM ***REDUCE FILE NAMES***
6010 REM ***TO 15 CHARACTERS***
6020 POKE 34,1: HOME
6030 PRINT CHR$(7): PRINT "ACTIVE PROGRAMS IN DIRECTORY ARE:"
6040 FOR X = 1 TO NUM
6050 LG(X) = LEN(FILE$(X))
6060 DIR$(X) = FILE$(X)
6070 IF LG(X) >15 THEN LG = 15:DIR$(X) = MID$ (DIR$(X),1,LG)
6080 NEXT X
6090 REM ***PRINT TWO COLUMN CATALOG***
6100 FOR X = 1 TO NUM STEP 2
6110 IF X >9 THEN 6160
6120 PRINT "( ";X;")";DIR$(X);
6130 IF X = 9 THEN 6180
6140 HTAB 20: PRINT "( ";X +1;")";DIR$(X +1)
6150 NEXT : GOTO 6200
6160 PRINT "(";X;")";DIR$(X);
6170 IF X = NUM THEN 6200
6180 HTAB 20: PRINT "(";X +1;")";DIR$(X +1)
6190 NEXT X
6200 REM POKE 34,20
6210 RETURN